public class Leet643 {
    /**
     * 给定 n 个整数，找出平均数最大且长度为 k 的连续子数组，并输出该最大平均数。
     * 示例：
     * 输入：[1,12,-5,-6,50,3], k = 4
     * 输出：12.75
     * 解释：最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
     */
    //耗费时间很长不建议使用
    public double findMaxAverage(int[] nums, int k) {
        double max=0;
        for (int i=0;i+k<=nums.length;i++){
            int j=k,f=i,a=0;

            while (j>0){
                a+=nums[f++];
                j--;
            }
            if (max<a){
                max=a;
            }
        }

        return max/k;
    }
    public double findMaxAverage2(int[] nums, int k) {
        double sum = 0;
        for(int i = 0;i < k; i++){
            sum += nums[i];
        }
        double t = sum;
        for(int i = 1;i < nums.length - k + 1;i++){
            t = t - nums[i - 1] + nums[ i + k - 1]; // 前去前一个i-1元素 加上新增的 i+k-1 个元素
            sum = Math.max(sum,t);
        }

        return sum/k;
    }
}
